<?php

namespace App\Models\Rebate;

use App\Models\BaseModel;

class RebateModel extends BaseModel
{
    /**
     * 与模型关联的数据表。
     *
     * @var string
     */
    protected $table = 'rebate';
    /**
     * 与表关联的主键
     *
     * @var string
     */
    protected $primaryKey = 'id';
    /**
     * 执行模型是否自动维护时间戳。
     *
     * @var bool
     */
    public $timestamps = false;

    /**
     * 可以被批量赋值的属性。
     *
     * @var array
     */
    protected $fillable = array(
        "name", "product_id", "status", "type",
        "remark", "effective_at",
        "instantly_money", "all_money",
        "admin_users_id"
    );
//    禁止修改字段
    protected $guarded = ['name', "product_id"];
    /**
     * 查询数据需要过滤掉的属性。
     *
     * @var array
     */
//    protected $hidden = array(//        'updated_at'
//    );

    public function aliasRable($alias)
    {
        return $this->setTable($alias);
    }

    //返回关键字段
    public function getTableField()
    {
        return $this->fillable;
    }

    protected function serializeDate(\DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }

    /**
     * 建表语句
     */
    protected function buildTable($name = '')
    {
        $tablename = $this->table;
        if (!empty($name)) {
            $tablename = $name;
        }
        $table = "CREATE TABLE IF NOT EXISTS  $tablename (
  `id` int(13) UNSIGNED NOT NULL COMMENT 'ID',
  `name` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '返费标识名字',
  `product_id` int(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '关联的产品id',
  `status` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否正常 1 停用 0 正常',
  `type` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '类型：0要审核，1免审核',
    `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` datetime DEFAULT NULL COMMENT '更新规则时间',
  `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
  `effective_at` datetime DEFAULT NULL COMMENT '规则生效时间',
  `expiration_at` datetime DEFAULT NULL COMMENT '规则失效时间',
  `instantly_money` decimal(8,1) NOT NULL DEFAULT '0.0' COMMENT '立返金额',
    `all_money` DECIMAL(8,1) NOT NULL DEFAULT '0' COMMENT '此规则下的将返总金额',
    `admin_users_id` int(13) UNSIGNED DEFAULT '0' COMMENT '创建者id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='财务返费表';";
        return $table;
    }

    /**
     * 插入新的字段
     */
    protected function bulidField()
    {
        return [];
    }

    public function getStatusList()
    {
        return [
            0 => '正常',
            1 => '冻结'
        ];
    }

//类型列表，方便返回前端显示
    public function getTypeList()
    {
        return [
            0 => "要审核",
            1 => "免审核"
        ];
    }

    public function getStatusDesc($key)
    {
        $allStatus = $this->getStatusList();
        return !empty($allStatus[$key]) ? $allStatus[$key] : '未知';
    }

    /**
     * 获取此规则下的所有关联的规则
     */
    public function rules()
    {
        return $this->hasMany('App\Models\Rebate\RebateRulesModel', 'rebate_id');
    }

//    关联产品，一对一
    public function product()
    {
        return $this->hasOne('App\Models\Product\ProductModel', 'id', 'product_id');
    }

    public function users()
    {
        return $this->hasOne('App\Models\Admin\AdminUsers', 'id', 'admin_users_id');
    }
}
